/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clebersantos.dao;

import com.clebersantos.pojos.Produto;
import com.clebersantos.utils.HibernateUtil;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Jurema
 */
public class ProdutoDao implements Serializable {

    Produto produto = new Produto();
    Session sessao;
    Transaction tx;

    public String cadastrarProduto(Produto prod) {

        try {
            
            String retorno = null;
            
            sessao = HibernateUtil.getSessionFactory().openSession();
            tx = sessao.beginTransaction();

            String nome = prod.getNome().toString().toUpperCase();

            List busca = sessao.createSQLQuery("SELECT * FROM Produto Where nome=" + "'" + nome + "'").list();

            System.out.println("Nome Criteria: " + busca.toString());

            if (busca.isEmpty()) {

                produto.setNome(nome);

                sessao.save(produto);
                tx.commit();
                System.out.println("Produto cadastrado");

                retorno = "Cadastro efetuado com sucesso!";

            } else {
                retorno = "Esse produto já está cadastrado!";
            }
            
            return retorno;

        } catch (Exception e) {
            System.out.println("Erro ProdutoDao " + e.toString() + " " + prod.getNome().toString());
            return e.toString();
        } finally {
            sessao.close();
        }

    }
    
    public List getAll(){
        
        List lista= null;
        
        try {
            
            sessao = HibernateUtil.getSessionFactory().openSession();
            
            Criteria cri = sessao.createCriteria(Produto.class);
            
            lista = cri.list();
            
            return lista;
            
        } catch (Exception e) {
            System.out.println(e.toString());
            return lista;
        } finally {
            sessao.close();
        }
        
    }

}
